﻿Public Class PerformantieHelper

    Private _stopWatch As Stopwatch
    Private _meetpunt As String

    ''' <summary>
    ''' Constructor
    ''' </summary>
    ''' <param name="meetPunt">Meetpunt</param>
    ''' <remarks>1 overload</remarks>
    Public Sub New(ByVal meetPunt As String)
        _meetpunt = meetPunt
        _stopWatch = Stopwatch.StartNew
    End Sub

    ''' <summary>
    ''' Stopt de timer en schrijft de meting weg naar de logtabel
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub LogMeting()
        If _stopWatch Is Nothing Then Exit Sub
        _stopWatch.Stop()
        log.WritePerformantie(String.Format("Performantiemeting {0}: {1}", _meetpunt, _stopWatch.ElapsedMilliseconds))
        _stopWatch = Nothing
    End Sub

    ''' <summary>
    ''' Annuleert de meting, nuttig wanneer er zich een exception heeft voorgedaan
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Cancel()
        If _stopWatch Is Nothing Then Exit Sub
        _stopWatch.Stop()
        _stopWatch = Nothing
    End Sub

    ''' <summary>
    ''' Pauseert de meting (bijv. wachten op feedback gebruiker
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Pause()
        _stopWatch.Stop()
    End Sub

    ''' <summary>
    ''' Gaat verder met de meting (zonder de stopwatch te resetten)
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub [Resume]()
        _stopWatch.Start()
    End Sub

End Class
